# Tuple元组和列表类似，区别在于用()定义，定义完成不能修改，
# list通常保存相同类型，tuple通常用于保存不同类型数据

# 定义元组
info_tuple = ("slx", 12, 1.80, 12)
print(info_tuple[1])
print(type(info_tuple))

# 获取元素数据,直接使用下标获取
print(info_tuple[1])

# 定义空元组,很少使用
empty_tuple = ()
print(type(empty_tuple))

# 定义一个元素的元组
# 下面定义仅仅是int，会自动忽略小括号
single_tuple = (5)
print(type(single_tuple))
# 此时才是元组类型
single_tuple2 = (5,)
print(type(single_tuple2))

# 元组操作
# 获取元素在元组中出现的个数
print(info_tuple.count(12))
# 获取元素元素的下标
print(info_tuple.index(12))
# 统计元组元素个数
print(len(info_tuple))

# 循环遍历,遍历的需求很少因为元组元素的数据类型不同，无法进行统一操作
for var in info_tuple:
    print(var, end=",")

print("")

# 使用场景
# 作为函数的参数、返回值可以接收多个

# print使用的格式化字符串多个参数，传入的则是元组
var1 = "slx"
var2 = 182.3333
var_info = (var1, var2)
# print("姓名=%s,身高=%.2f" % (var1, var2))
# 可以直接传入元组
print("姓名=%s,身高=%.2f" % var_info)

# 将列表修改为元组，数据不可修改，保护列表数据不被修改
num_list = [1, 2, 3, 4]
# 将list转换为元组
num_tuple = tuple(num_list)
print(num_tuple)
# 元组转换为list
num_list2 = list(num_tuple)
print(num_list2)
